﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using WpfApplication2.UserControls;
using WpfApplication2.Helpers;
using WpfApplication2.SindicatoWebService;
using System.Windows.Input;
using WpfApplication2.Views;
using WpfApplication2.Views.Afiliado;

namespace WpfApplication2.ViewModels.TipoOrden
{
    public class EditarTipoOrdenViewModel : ViewModel
    {
        #region properties

        public Service1SoapClient WS;
        public Instancias Instancias { get; set; }

        public PropertyElement Nombre
        {
            get
            {
                return nombre;
            }
            set
            {
                if (nombre != value)
                {
                    nombre = value;
                    RaisePropertyChanged("Nombre");
                }
            }
        }
        private PropertyElement nombre;


        public PropertyElement Precio
        {
            get
            {
                return precio;
            }
            set
            {
                if (precio != value)
                {
                    precio = value;
                    RaisePropertyChanged("Precio");
                }
            }
        }
        private PropertyElement precio;

        public TipoOrdenDTO TipoOrden { get; set; }

        #endregion

        public EditarTipoOrdenViewModel(Instancias instancias, TipoOrdenDTO tipoOrden)
        {
            WS = new Service1SoapClient();
            Instancias = instancias;
            TipoOrden = tipoOrden;

            Nombre = new PropertyElement() { Foreground = "White", Name = "Nombre", Value = tipoOrden.Nombre };
            Precio = new PropertyElement() { Foreground = "White", Name = "Precio", Value = tipoOrden.Precio };
            ValidationList = new List<PropertyElement>();
            Nombre.Validations.Add(ValidationType.Requerido);
            Precio.Validations.Add(ValidationType.Requerido);
            ValidationList.Add(Nombre);
            ValidationList.Add(Precio);
        }


        private DelegateCommand editarCommand;

        public ICommand EditarCommand
        {
            get
            {
                if (editarCommand == null)
                {
                    editarCommand = new DelegateCommand(Editar, CanExecute);
                }
                return editarCommand;
            }
        }

        private bool CanExecute()
        {
            return true;
        }

        private void Editar()
        {
            if (DataIsValid)
            {
                TipoOrden.Nombre = Nombre.Value;
                TipoOrden.Precio = Precio.Value;
                bool seGuardo = WS.EditarTipoOrden(TipoOrden);
                if (seGuardo)
                {
                    Instancias.ModalDialog.ShowHandlerDialog("El tipo de orden se ha guardado correctamente.");
                    Instancias.FrameContent.Content = new Home();
                }
                else
                {
                    Instancias.ModalDialog.ShowHandlerDialog("Ha ocurrido un error al guardar el tipo de orden.");
                }
            }
        }
    }
}